package io.jee.runshan.service.remote.qiye;

import io.jee.runshan.domain.remote.qiye.UserDetail;
import io.jee.runshan.domain.remote.qiye.UserInvite;
import io.jee.runshan.domain.remote.qiye.UserList;
import io.jee.runshan.domain.remote.qiye.base.Response;
import io.jee.runshan.domain.remote.qiye.request.UserBatchdeleteData;
import io.jee.runshan.domain.remote.qiye.request.UserCreateData;
import io.jee.runshan.domain.remote.qiye.request.UserInviteData;

import java.util.Map;

public interface IUserService {

	/**
	 * 创建用户
	 * 
	 * @Created: 2015年2月11日
	 * @Last_modified: 2015年2月11日 下午12:57:55
	 * @Last_modified_by: ynshun
	 * @Create_by: ynshun
	 * 
	 * @param data
	 * @return
	 */
	public Response create(UserCreateData data);

	/**
	 * 修改成员
	 * 
	 * @Created: 2015年2月11日
	 * @Last_modified: 2015年2月11日 下午12:59:55
	 * @Last_modified_by: ynshun
	 * @Create_by: ynshun
	 * 
	 * @param data
	 * @return
	 */
	public Response update(UserCreateData data);

	/**
	 * 删除用户
	 * 
	 * @Created: 2015年2月11日
	 * @Last_modified: 2015年2月11日 下午1:01:02
	 * @Last_modified_by: ynshun
	 * @Create_by: ynshun
	 * 
	 * @param userId
	 * @return
	 */
	public Response delete(String userId);

	/**
	 * 批量删除成员
	 * 
	 * @Created: 2015年2月11日
	 * @Last_modified: 2015年2月11日 下午1:04:29
	 * @Last_modified_by: ynshun
	 * @Create_by: ynshun
	 * 
	 * @param ids
	 * @return
	 */
	public Response batchdelete(UserBatchdeleteData ids);

	/**
	 * 获取用户详情
	 * 
	 * @Created: 2015年2月11日
	 * @Last_modified: 2015年2月11日 下午1:09:46
	 * @Last_modified_by: ynshun
	 * @Create_by: ynshun
	 * 
	 * @param userId
	 * @return
	 */
	public UserDetail detail(String userId);

	/**
	 * 发送关注邀请
	 * 
	 * @Created: 2015年2月11日
	 * @Last_modified: 2015年2月11日 下午2:05:35
	 * @Last_modified_by: ynshun
	 * @Create_by: ynshun
	 * 
	 * @param data
	 * @return
	 */
	public UserInvite invite(UserInviteData data);
	
	/**
	 * 获取部门成员(详情)
	 * @Created: 2015年2月11日
	 * @Last_modified: 2015年2月11日 下午2:21:11
	 * @Last_modified_by: ynshun
	 * @Create_by: ynshun
	 * 
	 * @param department_id
	 * @param fetch_child （1/0：是否递归获取子部门下面的成员 ）
	 * @param status（0：获取全部员工，1：获取已关注成员列表，2：获取禁用成员列表，4：获取未关注成员列表）
	 * @return
	 */
	public UserList list(Integer department_id, Integer fetch_child, Integer status);
	
	/**
	 * 导入用户
	 * @param tempPath
	 */
	public Map<Object,Object> importUser(String tempPath);
}
